package com.itheima.service.Impl;


import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.autoconfigure.PageHelperAutoConfiguration;
import com.itheima.common.entity.PageResult;
import com.itheima.mapper.CheckItemMapper;
import com.itheima.pojo.dto.CheckItemDTO;
import com.itheima.pojo.dto.CheckItemQueryDTO;
import com.itheima.pojo.CheckItem;
import com.itheima.pojo.vo.CheckItemVO;
import com.itheima.service.CheckItemService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class CheckItemServiceImpl implements CheckItemService {
	@Autowired
	private CheckItemMapper checkItemMapper;
	@Autowired
	private PageHelperAutoConfiguration pageHelperAutoConfiguration;

	/**
	 * 新增检查项
	 *
	 * @param checkItemDTO
	 */
	@Override
	public void add(CheckItemDTO checkItemDTO) {
		checkItemMapper.add(checkItemDTO);
	}

	/**
	 * 根据id删除检查项
	 *
	 * @param id
	 */
	@Override
	public void delete(Integer id) {
		//检查删除的id是否被检查组关联
		Integer count = checkItemMapper.getGroupIdByItemId(id);
		if (count > 0) {
			throw new RuntimeException("当前检查项被检查组关联，不能删除");
		}
		checkItemMapper.delete(id);
	}

	/**
	 * 编辑修改检查项
	 *
	 * @param checkItemDTO
	 */
	@Override
	public void edit(CheckItemDTO checkItemDTO) {
		checkItemMapper.edit(checkItemDTO);
	}

	/**
	 * 条件分页查询
	 *
	 * @param checkItemQueryDTO
	 * @return
	 */
	@Override
	public PageResult findPage(CheckItemQueryDTO checkItemQueryDTO) {
		PageHelper.startPage(checkItemQueryDTO.getCurrentPage(), checkItemQueryDTO.getPageSize());
		Page<CheckItemVO> page = checkItemMapper.getPage(checkItemQueryDTO);
		long total = page.getTotal();
		List<CheckItemVO> rows = page.getResult();
		return new PageResult(total, rows);
	}

	/**
	 * 根据id查询检查项
	 *
	 * @param id
	 * @return
	 */
	@Override
	public CheckItemVO findById(Integer id) {
		CheckItemVO checkItemVO = checkItemMapper.findById(id);
		return checkItemVO;
	}

	/**
	 * 查询所有检查项
	 *
	 * @return
	 */
	@Override
	public List<CheckItemVO> findAll() {
		List<CheckItemVO> checkItemVOList = checkItemMapper.findAll();
		return checkItemVOList;
	}

	/**
	 * 根据检查组id查询检查项id集合
	 *
	 * @param checkgroupId
	 * @return
	 */
	@Override
	public List<Integer> findCheckItemIdsByCheckGroupId(Integer checkgroupId) {

		List<Integer> checkItemIds = checkItemMapper.findCheckItemIdsByCheckGroupId(checkgroupId);
		return checkItemIds;
	}
}
